﻿#ifndef LUAHELPER_H
#define LUAHELPER_H

#include <QObject>
#include <QVariant>
#include <QMap>

class LuaHelperPrivate;
class LuaHelper : public QObject
{
    Q_DISABLE_COPY(LuaHelper)
    Q_OBJECT

private:
    explicit LuaHelper();
    virtual ~LuaHelper();

public:
    static LuaHelper* getInstance();

    static void freeInstance();

    /**
     * @brief loadLuaModel 加载lua模型
     * @param filePath lua模型位置
     * @return
     */
    bool loadLuaModel(const QString& filePath);

    /**
     * @brief execDictionary 获取所有的键值数据
     * @return
     */
    QMap<uint32_t, QString> execDictionary();

    /**
     * @brief execLua   执行lua函数
     * @param type      数据类型
     * @param base      数据基
     * @param quantity  量化数据
     * @return
     */
    QVariant execLua(int type, double base, double quantity);

    /**
     * @brief execLuaWithMathFormula 解析数据公式
     * @param base          基准数据
     * @param mathFormula   数学公式
     * @return
     */
    bool execLuaWithMathFormula(double base, const char* mathFormula, QVariant& result);

signals:

private:
    static LuaHelper *m_instance;
    LuaHelperPrivate* d;
};

#endif // LUAHELPER_H
